#include "point.h"

#ifndef __CHARACTER_H
#define __CHARACTER_H

enum CONTROL_TYPE
{
	CONTROL_AI,
	CONTROL_HUMAN,
	CONTROL_NETWORK,
};

typedef id_t CHARACTER_RACE;
static const CHARACTER_RACE RACE_HUMAN		= 0;
static const CHARACTER_RACE RACE_DWARF		= 1;
static const CHARACTER_RACE RACE_ELF		= 2;
static const CHARACTER_RACE RACE_DRAGON		= 3;
static const CHARACTER_RACE RACE_UNDEAD		= 4;
static const CHARACTER_RACE RACE_INVALID	= -1;

struct SCharacterPoints
{
	int64_t HP, MP, XP;
};

struct SCharacter
{
	// Mostly static data, generally initialized at startup from a table containing base character definitions.
	SCharacterPoints	MaxPoints;		// 
	CHARACTER_RACE		CharacterRace;	// 

	// Data which varies often between frames
	SCharacterPoints	CurrentPoints;	// 
	m3d::SPoint2F		Position;		// 
	
	// AI data
	CONTROL_TYPE		ControlType;	// for deciding if using AI or keyboard to control the character, or maybe from another computer

	SCharacter();
	SCharacter( CHARACTER_RACE _CharacterRace, CONTROL_TYPE _ControlType );
	void				Init( CHARACTER_RACE CharacterRace, CONTROL_TYPE ControlType );
};

#endif // _CHARACTER_H